package review.Day_0404;

/**
 * @author zxc
 * @date 2023/04/04 17:00
 **/
public class Solution01 {
    // 思路 ：数组，来模拟滑动窗口
    // 辅助数组
    int[] temp;
    // 记录数组中所存储的元素数量
    int size;
    // 滑动窗口的大小
    int maxSize;
    public Solution01(int size) {
        temp = new int[10010];
        this.maxSize = size;
        this.size = 0;
    }

    public double next(int val) {
        // temp[当前元素下标i]，即存储了数组temp中前i个元素和;
        if(size == 0){
            temp[size] = val;
        }
        else {
            temp[size] = temp[size - 1] + val;
        }
        size++;
        // 当前数组中所存储的元素数量 <= maxSize，即 当前数组中所有元素都是处于滑动窗口范围内;
        if(size <= maxSize){
            return temp[size - 1] * 1.0 / size;
        }
        // 即，当前数组中所存储的元素数量 > maxSize,即 当前数组中存在部分元素是不处于滑动窗口范围内的：
        return (temp[size - 1] - temp[size - maxSize - 1]) * 1.0 / maxSize;
    }
}
